/*
*
==============================================================================
*  Name        : 
*  Part of     : Omen Game Engine
*  Description : 
*  Version     : 1.0
*
*  Copyright (c) 2013 Lauri Kortevaara.
* 
==============================================================================
*/

#ifndef OMEN_I_TIMER_H
#define OMEN_I_TIMER_H

#include "OmenConfig.h"
#include "IOmenObject.h"

namespace Omen {

class OMEN_API ITimer : public Omen::IObject
{
public:
    virtual void start() = 0;               /// <summary>Starts the timer</summary>
    virtual void stop() = 0;                /// <summary>Stops the timer. Clears the counters</summary>
    virtual void pause() = 0;               /// <summary>Pauses the timer. Clears the counters</summary>

    virtual void initialize() = 0;          /// <summary>Initializes the timer, which clears the counters</summary>

    virtual bool running() = 0;             /// <summary>Returns true if the timer is running, false othersize</summary>

    virtual Omen::Float totalTime() = 0;    /// <summary>Returns the total time in seconds since the timer was started</summary>
    virtual Omen::Float elapsedTime(bool initTime = false) = 0;  /// <summary>Returns the elapsed time in seconds since the last query of elapsed time</summary>
}; // class ITimer

} // namespace Omen

#endif // OMEN_I_TIMER_H

/// EOF